
package Servlets;

import Beans.WorldBean;
import Entities.World;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet(name = "WorldListServlet", urlPatterns = {"/WorldListServlet"})
public class WorldListServlet extends HttpServlet {

    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{
            request.getAttribute("id");           
                                   
            InputStream inputStream = request.getInputStream();
            ObjectInputStream i = new ObjectInputStream(inputStream);
            String code = (String) i.readObject();
            i.close();
            
            HttpSession httpSession = request.getSession(true);
            
            WorldBean worldBean = (WorldBean) httpSession.getAttribute("Bean");
            
            if(worldBean == null){
                InitialContext context = new InitialContext();
                try{
                    worldBean = (WorldBean) context.lookup("java:module/WorldBean");
                } catch (Exception ex){
                    
                }
                httpSession.setAttribute("Bean", worldBean);
            }
            
            
            
            ArrayList<World> worldList = (ArrayList<World>) worldBean.loadWorldList();
                                 
            OutputStream outputStream = response.getOutputStream();
            ObjectOutputStream o = new ObjectOutputStream(outputStream);
            o.writeObject(worldList);
            o.writeObject(httpSession.getId());
            o.flush();
            o.close();
            
        } catch (Exception ex){
            
        }
        
        
        
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
